.org 0x0
.global _start
# .set noat

_start:
    ori     x1,x0,0
    ori     x2,x0,0
    ori     x3,x0,0
    ori     x4,x0,0
    ori     x5,x0,0
    ori     x6,x0,0
    ori     x7,x0,0
    ori     x8,x0,0
    ori     x9,x0,0
    ori     x10,x0,0
    ori     x11,x0,0
    ori     x12,x0,0
    ori     x13,x0,0
    ori     x14,x0,0
    ori     x15,x0,0
    ori     x16,x0,0 
# shift left
    ori     x1,x0,1
    slli    x1,x1,2
    ori     x1,x1,8

    ori     x2,x0,1
    slli    x2,x2,3
    ori     x2,x2,1

#shift right
    ori     x1,x0,8
    srli    x3,x1,1
    ori     x3,x0,16
    srl     x3,x2,x1

#shift left without immediate
    ori     x1,x0,2
    ori     x2,x0,16
    srl     x3,x2,x1

# add and sub
    ori     x3,x3,0 # x3 is 4
    ori     x1,x0,8
    ori     x2,x0,3
    add     x3,x1,x3 # 8 + 4
    ori     x3,x3,0 # 12
    addi    x3,x2,2 # 3 + 2 =5
    sub     x3,x1,x3 # 8 - 5 =3
#set less than
    ori     x1,x0,6
    ori     x2,x0,3
    slt     x3,x1,x2
    slt     x3,x2,x1
    slti    x3,x1,5
    slti    x3,x1,66

    ori     x1,x0,-6
    ori     x2,x0,-3
    slt     x3,x1,x2
    slt     x3,x2,x1
    slti    x3,x1,-5
    slti    x3,x1,-66
    
    sltu    x3,x1,x2
    sltu    x3,x2,x1
    sltiu   x3,x1,-5
    sltiu   x3,x1,-66
    
# and
    ori     x1,x0,24 # 1_1000
    ori     x2,x0,8  # 0_1000
    and     x3,x1,x2
    andi    x3,x1,16

#xor
    ori     x1,x0,7
    ori     x2,x0,8 
    xor     x3,x1,x2
    xori    x3,x1,25 # 1_1001 ^ 0111 = 1_1110


